package io.esirong.image;

import android.graphics.Bitmap;
import android.media.ExifInterface;
import android.text.TextUtils;
import android.widget.ImageView;

import java.io.IOException;
import java.text.DateFormat;

import static io.esirong.image.BitmapUtils.drawableToBitmap;
import static io.esirong.image.BitmapUtils.saveBitmapToFile;


/**
 * Describe：图片工具类
 * 应用于ImageView的复用性功能
 * 请使用ImageLoader进行图片的加载显示管理
 */

public class ImageUtils {

    /**
     * 将ImageView控件中的图片保存到文件(会将当前时间做为文件合的一部份）
     *
     * @param imgView {@link ImageView}
     * @return 保存为图片文件则返回文件路径，否则返回null
     */
    public static String saveToFile(ImageView imgView) {

        if (imgView.getDrawable() == null) {
            return null;
        }

        Bitmap bmp = null;
        try {
            bmp = drawableToBitmap(imgView.getDrawable());
        } catch (Exception e) {
            return null;
        }
        if (bmp == null) {
            return null;
        }

        String path = DateFormat.getDateTimeInstance().format(System.currentTimeMillis());
        Object viewTag = imgView.getTag();
        if (viewTag != null) {
            path = viewTag.toString() + path;
        }
        try {
            if (TextUtils.isEmpty(path)) {
                return path;
            } else {
                saveBitmapToFile(bmp, path);
            }
            return path;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    /**
     * 获取照片角度
     *
     * @param path 图片保存路径
     * @return 角度（默认值0；可能读取不到）
     */
    public static int readImageDegree(String path) {
        int degree = 0;
        try {
            ExifInterface exifInterface = new ExifInterface(path);
            int orientation = exifInterface.getAttributeInt(
                    ExifInterface.TAG_ORIENTATION,
                    ExifInterface.ORIENTATION_NORMAL);

            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
                default:
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return degree;
    }

    /**
     * 读取图片的位置信息
     */
    public static void readImageLocation(String path) {
        ExifInterface exifInterface = null;
        try {
            exifInterface = new ExifInterface(path);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
